package com.tofacebook.jdbc.config;

import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;

public class MybatisConfig {
    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
        //通过SqlSessionFactoryBean实现后去SqlSession代理Mapper接口的实现类，
        /**
         * sqlSession.insert("com.tofacebook.mybatis.mapper.CategoryMapper.insertCategory");
         * 底层就是执行Mapper接口里面方法，
         * 通过mybatis去映射到*Mapper.xml中sql id 去执行对应的sql语句
         */
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        /**
         * 相当于 <typeAliases>标签所做的事情 ，只不过是通过java代码去做，
         * 就是给com.tofacebook.proxy.model包所有的类取别名
         */
        sqlSessionFactoryBean.setTypeAliasesPackage(" com.tofacebook.jdbc.model");
        //直接将dataSource 里面数据库配置信息加载SqlSessionFactoryBean类里面去
        sqlSessionFactoryBean.setDataSource(dataSource);
        return sqlSessionFactoryBean;
    }

    /**
     * 扫描我们Mapper接口
     * @return
     */
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer msc = new MapperScannerConfigurer();
        msc.setBasePackage("com.tofacebook.jdbc.maper");
        return msc;
    }
}
